package com.cskaoyan.mapper;

import com.cskaoyan.bean.Student;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

public interface StudentMapper {

    // 一个简单参数
    Student selectStudentById(@Param("id") Integer id);

    //使用${} 来取值
    Student selectStudentByIdUse$(@Param("id") Integer id);

    // 多个简单参数
    int updateStudentNameById(@Param("sid") Integer id,
                              @Param("sname") String name);


    // 通过对象传值 不加注解
    int insertStudentWithoutParam(Student student);


    // 通过对象传值 加注解
    int insertStudentWithParam(@Param("student") Student student);


    // 练习
    int updateStudentById(@Param("id") Integer id,
                          @Param("student") Student student);


    // 使用map进行传值
    int updateStudentNameByIdUseMap(Map<String,Object> map);

    int updateStudentNameByIdUseMapWithParam(@Param("map") Map<String,Object> map);


    // 按位置进行传值
    int insertStudentUseIndex(Integer id, String name, Integer age, Date birth,String gender);


    Student selectStudentByName(@Param("name") String name);

    Student selectStudentByNameUse$(@Param("name") String name);


    // 传入列名
    List<Student> selectStudentListOrderByColumnName(@Param("columnName") String columnName);

    // 传入表名、根据表名和id值来查询
    Student selectStudentByIdAndTableName(@Param("tableName") String tableName,@Param("id") Integer id);
}
